1. Field
The present embodiments relate to techniques for executing native code modules. More specifically, the present embodiments relate to a method and system for providing system services to native code modules.
2. Related Art
Easy access to computers and plentiful network bandwidth have facilitated sharing of information and applications. For instance, a user can easily install and execute an application which is downloaded from a web site or received from a friend as an email attachment. However, installing and executing such applications on a given computing device involves a level of trust. Because such applications are often executed with inadequate security mechanisms, a user must implicitly trust that the application does not include any malicious code. Some applications exploit such blind trust, however, by including “viruses” that can damage or erase information on the computing device, and can replicate and propagate themselves to other vulnerable devices on the network.
Some techniques have been developed to mitigate the negative impacts of viruses. For instance, some interpreted languages seek to reduce the risks involved in executing unknown code by limiting the ability of a language to specify unsafe operations. Alternatively, virtual machine execution environments facilitate running guest operating systems on completely virtualized hardware (which executes on actual hardware), thereby isolating untrusted applications to their own virtual machines to reduce security risks. However, code written for such approaches typically has a significant performance disadvantage in comparison to executing native code.
Hence, what is needed is a method that provides security without the performance limitations of existing techniques.